<?php

/**
 * Description of ClienteServicios
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class ClienteServicios extends Servicios
{

  function agregarCliente($clienteDTO)
  {
    $repoCliente = new RepoCliente();
    return $repoCliente->agregar(deDTO($clienteDTO));
  }

  function modificarCliente($clienteDTO)
  {
    $repoCliente = new RepoCliente();
    return $repoCliente->modificar(deDTO($clienteDTO));
  }

  function buscar($id)
  {
    $repoCliente = new RepoCliente();
    return $this->aDTO($repoCliente->buscar($id));
  }

  function listar()
  {
    $repoCliente = new RepoCliente();
    $clientes = $repoCliente->listar();
    foreach ($clientes as $cliente)
    {
      $clientesDTO[] = aDTO($cliente);
    }
    return $clientesDTO;
  }

  function eliminar($id)
  {
    $repoCliente = new RepoCliente();
    return $repoCliente->eliminar($id);
  }

  function deDTO(ClienteEventualDTO $clienteDTO)
  {
    if ($clienteDTO->tipoDocumento != null)
    {
      $repoTipoDocumento = new RepoTipoDocumento();
      $tipoDocumento = $repoTipoDocumento->buscar($clienteDTO->getIdTipoDocumento());
      $cliente->setTipoDocumento($tipoDocumento);
    }
    $cliente = new Cliente();
    $cliente->setApellido($clienteDTO->getApellido());
    $cliente->setDomicilio($clienteDTO->getDomicilio());
    $cliente->setEmail($clienteDTO->getEmail());
    $cliente->setNombre($clienteDTO->getNombre());
    $cliente->setNroDocumento($clienteDTO->getNroDocumento());
    $cliente->setTelefono($clienteDTO->getTelefono());
    $cliente->setTelefono1($clienteDTO->getTelefono1());
  }

  function aDTO(Cliente $cliente)
  {
     $clienteDTO = new ClienteEventualDTO();
    $clienteDTO->setApellido($cliente->getApellido());
    $clienteDTO->setDomicilio($cliente->getDomicilio());
    $clienteDTO->setEmail($cliente->getEmail());
    $clienteDTO->setId($cliente->getId());
    $clienteDTO->setUsuario($cliente->getUsuario());
    $clienteDTO->setVersion($cliente->getVersion());
    $clienteDTO->setNombre($cliente->getNombre());
    $clienteDTO->setNroDocumento($cliente->getNroDocumento());
    $clienteDTO->setTelefono($cliente->getTelefono());
    $clienteDTO->setDeshabilitado($cliente->getDeshabilitado());
    $tipoDocumentoDTO = new TipoDocumentoDTO();
    $tipoDocumento = new TipoDocumento();
    $tipoDocumento = $cliente->getTipoDocumento();
    $tipoDocumentoDTO->setId($tipoDocumento->getId());
    $tipoDocumentoDTO->setNombre($tipoDocumento->getNombre());
    $clienteDTO->setTipoDocumento($tipoDocumento);
    return $clienteDTO;
  }

}

?>
